This document contains figures and statistics used for ERP analyses
source('ana/shared.R')
source('ana/learningRates.R')
source('ana/permutationTtest.R')
source('ana/directionMoves.R')
We time-locked to the feedback onset, or after the participants have performed the reaching movement. For these set of analyses we include 10 fronto-central-parietal electrodes:
FCz, F3, Fz, F4, C3, Cz, C4, P3, Pz, P4
We then baseline 100 ms prior to the feedback onset and compare signal differences from the feedback onset until 1 second after. We compare whether two signals are statistically different from each other by implementing cluster-based permutation statistics. If the difference between two signals for a given set of timepoints exceed a T-value threshold, then these timepoints are identified as clusters (indicated in plots below as light-shaded bars). However, after running 1000 permutations, these clusters are deemed significant if the probability of a difference occurring is not merely due to chance. These significant clusters are what we report in the manuscript and are indicated in the plots below as solid bars.
We compare signals across conditions in three steps. First, we compare whether each early or late condition in each perturbation type is different from the aligned condition. Next, we calculate difference waves between each condition and the aligned condition, such that we can compare early and late conditions directly. Finally, we calculate difference waves between early and late conditions in each perturbation type, such that we can compare across perturbation types.
plotPermTestEarlyLateERPs()
getEarlyLateERPPvalStats(comparison='vsAligned', erps='frn')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 earlyrot 6 76 0.030 0.375 0.003
## 2 1 earlyrot 78 129 0.390 0.640 0.040
## 3 2 earlyrot 146 201 0.730 1.000 0.027
## 4 3 laterot 4 12 0.020 0.055 0.148
## 5 4 laterot 15 71 0.075 0.350 0.018
## 6 5 laterot 78 201 0.390 1.000 0.003
## 7 6 earlyrdm 6 110 0.030 0.545 0.002
## 8 7 earlyrdm 149 150 0.745 0.745 0.400
## 9 8 earlyrdm 156 159 0.780 0.790 0.294
## 10 9 earlyrdm 163 164 0.815 0.815 0.400
## 11 10 earlyrdm 175 176 0.875 0.875 0.399
## 12 11 earlyrdm 181 196 0.905 0.975 0.121
## 13 12 laterdm 2 66 0.010 0.325 0.002
## 14 13 laterdm 172 177 0.860 0.880 0.315
## 15 14 laterdm 179 201 0.895 1.000 0.074
## 16 15 earlymir 5 65 0.025 0.320 0.002
## 17 16 earlymir 93 97 0.465 0.480 0.282
## 18 17 earlymir 99 116 0.495 0.575 0.083
## 19 18 earlymir 122 126 0.610 0.625 0.292
## 20 19 earlymir 154 156 0.770 0.775 0.390
## 21 20 earlymir 160 163 0.800 0.810 0.331
## 22 21 earlymir 171 201 0.855 1.000 0.038
## 23 22 latemir 2 79 0.010 0.390 0.006
## 24 23 latemir 81 201 0.405 1.000 0.003
plotPermTestEarlyLateDiffWaves()
getEarlyLateERPPvalStats(comparison='EarlyvsLate', erps='frn')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rot 11 69 0.055 0.34 0.010
## 2 1 rdm 13 15 0.065 0.07 0.419
## 3 2 rdm 34 109 0.170 0.54 0.006
## 4 3 rdm 112 115 0.560 0.57 0.392
## 5 4 mir NA NA NA NA NA
We find differences between early and late conditions in only the fixed and random rotation perturbations. These differences show a more positive peak for early training around 250 ms post-feedback.
plotPermTestPTypeEarlyLateDiffWaves()
getEarlyLateERPPvalStats(comparison='PerturbTypeComp', erps='frn')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rotvmir 28 34 0.14 0.165 0.256
## 2 1 rotvmir 38 55 0.19 0.270 0.114
## 3 2 rotvmir 70 72 0.35 0.355 0.442
## 4 3 rotvrdm 74 77 0.37 0.380 0.378
## 5 4 rotvrdm 90 94 0.45 0.465 0.363
## 6 5 mirvrdm 62 103 0.31 0.510 0.031
We find a significant cluster showing a difference between mirror and random conditions. This is likely due to the lack of a difference between early and late in the mirror condition, but the presence of the effect in the random perturbation. Although clusters were identified in comparing fixed rotation with mirror, these were not significant.
This is also time-locked to feedback onset, but only considers electrodes along the midline:
FCz, Fz, Cz, Pz
plotPermTestEarlyLateP3()
plotPermTestEarlyLateDiffWavesP3()
Similar to our analyses including more electrodes, we observe a more positive peak for early training around 250 ms post-feedback in fixed and random rotation perturbations, but not in the mirror perturbation.
plotPermTestPTypeEarlyLateDiffWavesP3()
The mirror and random perturbation conditions show a difference after 250 ms post-feedback.
We time-locked to the go signal onset, which occurs 1 second after target onset. For these set of analyses, we include C3 and C4 electrodes (motor areas in both hemispheres).
We then baseline 300 ms prior to the target onset and compare signal differences from the target onset until the go signal onset (1 sec duration). We compare conditions using the same statistical procedure and analyses steps mentioned in the feedback error processing section.
plotPermTestEarlyLateRP()
getEarlyLateERPPvalStats(comparison='vsAligned', erps='rp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 earlyrot 29 32 -0.855 -0.845 0.505
## 2 1 earlyrot 77 81 -0.615 -0.600 0.391
## 3 2 laterot 99 105 -0.505 -0.480 0.227
## 4 3 laterot 110 142 -0.450 -0.295 0.019
## 5 4 laterot 144 146 -0.280 -0.275 0.454
## 6 5 laterot 149 164 -0.255 -0.185 0.077
## 7 6 earlyrdm 82 106 -0.590 -0.475 0.066
## 8 7 earlyrdm 114 141 -0.430 -0.300 0.057
## 9 8 earlyrdm 146 180 -0.270 -0.105 0.046
## 10 9 earlyrdm 185 188 -0.075 -0.065 0.433
## 11 10 laterdm 141 144 -0.295 -0.285 0.503
## 12 11 laterdm 0 2 -1.000 -0.995 0.544
## 13 12 laterdm 16 19 -0.920 -0.910 0.503
## 14 13 laterdm 32 35 -0.840 -0.830 0.466
## 15 14 laterdm 47 52 -0.765 -0.745 0.345
## 16 15 laterdm 57 59 -0.715 -0.710 0.543
## 17 16 earlymir 87 91 -0.565 -0.550 0.422
## 18 17 earlymir 103 106 -0.485 -0.475 0.503
## 19 18 earlymir 119 131 -0.405 -0.350 0.158
## 20 19 earlymir 132 138 -0.340 -0.315 0.324
## 21 20 earlymir 145 148 -0.275 -0.265 0.512
## 22 21 earlymir 150 156 -0.250 -0.225 0.297
## 23 22 earlymir 174 184 -0.130 -0.085 0.203
## 24 23 latemir 118 125 -0.410 -0.380 0.202
## 25 24 latemir 162 164 -0.190 -0.185 0.407
## 26 25 latemir 173 181 -0.135 -0.100 0.180
plotPermTestEarlyLateRPDiffWaves()
getEarlyLateERPPvalStats(comparison='EarlyvsLate', erps='rp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rot 28 34 -0.860 -0.835 0.227
## 2 1 rot 36 39 -0.820 -0.810 0.368
## 3 2 rot 109 119 -0.455 -0.410 0.140
## 4 3 rot 123 137 -0.385 -0.320 0.089
## 5 4 rot 149 159 -0.255 -0.210 0.148
## 6 5 rot 171 201 -0.145 0.000 0.036
## 7 6 rdm 0 1 -1.000 -1.000 0.509
## 8 7 rdm 11 14 -0.945 -0.935 0.445
## 9 8 rdm 15 21 -0.925 -0.900 0.289
## 10 9 rdm 56 60 -0.720 -0.705 0.337
## 11 10 rdm 64 67 -0.680 -0.670 0.444
## 12 11 rdm 79 101 -0.605 -0.500 0.071
## 13 12 rdm 126 132 -0.370 -0.345 0.288
## 14 13 rdm 166 180 -0.170 -0.105 0.107
## 15 14 rdm 186 201 -0.070 0.000 0.114
## 16 15 mir 71 73 -0.645 -0.640 0.571
We find that the late condition for the fixed rotation perturbation is more positive, around 100 ms prior to the go signal onset.
plotPermTestPTypeEarlyLateRPDiffWaves()
getEarlyLateERPPvalStats(comparison='PerturbTypeComp', erps='rp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rotvmir 133 134 -0.335 -0.335 0.461
## 2 1 rotvmir 152 154 -0.240 -0.235 0.411
## 3 2 rotvmir 181 184 -0.095 -0.085 0.375
## 4 3 rotvrdm 0 2 -1.000 -0.995 0.327
## 5 4 rotvrdm 9 13 -0.955 -0.940 0.287
## 6 5 rotvrdm 32 39 -0.840 -0.810 0.193
## 7 6 rotvrdm 44 54 -0.780 -0.735 0.140
## 8 7 rotvrdm 56 61 -0.720 -0.700 0.222
## 9 8 rotvrdm 65 66 -0.675 -0.675 0.366
## 10 9 rotvrdm 78 83 -0.610 -0.590 0.223
## 11 10 rotvrdm 86 106 -0.570 -0.475 0.073
## 12 11 rotvrdm 110 119 -0.450 -0.410 0.157
## 13 12 rotvrdm 123 136 -0.385 -0.325 0.103
## 14 13 rotvrdm 151 159 -0.245 -0.210 0.178
## 15 14 rotvrdm 164 201 -0.180 0.000 0.031
## 16 15 mirvrdm 10 12 -0.950 -0.945 0.537
## 17 16 mirvrdm 14 22 -0.930 -0.895 0.193
## 18 17 mirvrdm 33 37 -0.835 -0.820 0.353
## 19 18 mirvrdm 94 100 -0.530 -0.505 0.293
We find a difference between rotation and random perturbations, likely driven by the difference observed between early and late training in the fixed rotation perturbation.
We observed that the RPs were lateralized for trials in which participants either moved to the right or left side of the workspace. That is, C3 showed a more negative RP than C4, for movements to the right of the workspace, while this was flipped for movements to the left of the workspace. This effect seems more pronounced in the aligned condition, but is still observed for the average activity shown in the other perturbation types.
plotWorkspaceLRPs()
Notably, we only observe this effect for targets located near the horizontal axis. That is, the effect goes away if we consider the targets near the vertical axis. As such, we calculate Lateralized RPs: (right C3 - right C4) - (left C3 - left C4), and only consider epochs where participants had to move either to the left or right of the workspace.
plotPermTestEarlyLateLRPs()
getEarlyLateERPPvalStats(comparison='vsAligned', erps='lrp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 laterdm 28 35 -0.860 -0.830 0.142
## 2 1 laterdm 55 61 -0.725 -0.700 0.169
## 3 2 laterdm 88 92 -0.560 -0.545 0.311
## 4 3 laterdm 103 105 -0.485 -0.480 0.472
## 5 4 laterdm 109 119 -0.455 -0.410 0.106
## 6 5 laterdm 127 133 -0.365 -0.340 0.197
## 7 6 laterdm 199 201 -0.005 0.000 0.498
## 8 7 earlyrot 3 4 -0.985 -0.985 0.633
## 9 8 earlyrot 66 67 -0.670 -0.670 0.665
## 10 9 earlyrot 76 87 -0.620 -0.570 0.067
## 11 10 earlyrot 91 105 -0.545 -0.480 0.064
## 12 11 earlyrot 118 127 -0.410 -0.370 0.143
## 13 12 earlyrot 134 145 -0.330 -0.280 0.100
## 14 13 earlyrot 151 157 -0.245 -0.220 0.229
## 15 14 earlyrot 177 181 -0.115 -0.100 0.370
## 16 15 laterot 31 36 -0.845 -0.825 0.303
## 17 16 earlymir 27 32 -0.865 -0.845 0.192
## 18 17 earlymir 53 57 -0.735 -0.720 0.272
## 19 18 earlymir 63 72 -0.685 -0.645 0.095
## 20 19 earlymir 83 88 -0.585 -0.565 0.192
## 21 20 earlymir 105 106 -0.475 -0.475 0.666
## 22 21 latemir 26 32 -0.870 -0.845 0.144
## 23 22 latemir 49 51 -0.755 -0.750 0.633
## 24 23 latemir 66 69 -0.670 -0.660 0.549
## 25 24 latemir 70 76 -0.650 -0.625 0.169
plotPermTestEarlyLateLRPDiffWaves()
getEarlyLateERPPvalStats(comparison='EarlyvsLate', erps='lrp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rot 30 35 -0.850 -0.830 0.213
## 2 1 rot 1 4 -0.995 -0.985 0.469
## 3 2 rdm 88 90 -0.560 -0.555 0.483
## 4 3 rdm 97 101 -0.515 -0.500 0.305
## 5 4 mir 0 2 -1.000 -0.995 0.519
plotPermTestPTypeEarlyLateLRPDiffWaves()
getEarlyLateERPPvalStats(comparison='PerturbTypeComp', erps='lrp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rotvmir 0 3 -1.000 -0.990 0.291
## 2 1 rotvmir 30 35 -0.850 -0.830 0.251
## 3 2 rotvrdm 88 90 -0.560 -0.555 0.524
## 4 3 rotvrdm 97 102 -0.515 -0.495 0.245
## 5 4 mirvrdm 0 2 -1.000 -0.995 0.453
## 6 5 mirvrdm 7 11 -0.965 -0.950 0.237
## 7 6 mirvrdm 86 90 -0.570 -0.555 0.297
## 8 7 mirvrdm 98 102 -0.510 -0.495 0.297
We do not find any differences across conditions for LRPs.
We repeat the same analyses steps as the ones above, however, we now split the data according to small and large errors.
plotPermTestSmallLargeERPs()
getSmallLargeERPPvalStats(comparison = 'vsAligned', erps = 'frn')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 smallrot 4 201 0.020 1.000 0.001
## 2 1 largerot 1 6 0.005 0.025 0.296
## 3 2 largerot 14 64 0.070 0.315 0.007
## 4 3 largerot 178 191 0.890 0.950 0.157
## 5 4 largerot 193 200 0.965 0.995 0.237
## 6 5 smallrdm 1 112 0.005 0.555 0.001
## 7 6 smallrdm 122 201 0.610 1.000 0.007
## 8 7 largerdm 5 64 0.025 0.315 0.004
## 9 8 largerdm 193 197 0.965 0.980 0.344
## 10 9 smallmir 0 201 0.000 1.000 0.001
## 11 10 largemir 4 56 0.020 0.275 0.005
## 12 11 largemir 144 201 0.720 1.000 0.003
plotPermTestSmallLargeDiffWaves()
getSmallLargeERPPvalStats(comparison = 'SmallvsLarge', erps = 'frn')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rot 62 68 0.310 0.335 0.228
## 2 1 rot 74 79 0.370 0.390 0.259
## 3 2 rot 84 101 0.420 0.500 0.091
## 4 3 rot 104 170 0.520 0.845 0.007
## 5 4 rdm 14 16 0.070 0.075 0.528
## 6 5 rdm 56 184 0.280 0.915 0.002
## 7 6 mir 12 14 0.060 0.065 0.386
## 8 7 mir 42 128 0.210 0.635 0.007
## 9 8 mir 129 137 0.645 0.680 0.206
## 10 9 mir 141 153 0.705 0.760 0.155
## 11 10 mir 157 166 0.785 0.825 0.186
Trials where a small error is experienced show a sustained positivity post-feedback in all perturbation conditions. However, this difference seems to occur at a later timepoint for the fixed rotation.
plotPermTestPTypeSmallLargeDiffWaves()
getSmallLargeERPPvalStats(comparison = 'PerturbTypeComp', erps = 'frn')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rotvmir 42 47 0.210 0.230 0.301
## 2 1 rotvmir 53 54 0.265 0.265 0.543
## 3 2 rotvrdm NA NA NA NA NA
## 4 3 mirvrdm NA NA NA NA NA
However, there are no differences when comparing across perturbations.
plotPermTestSmallLargeP3()
plotPermTestSmallLargeDiffWavesP3()
plotPermTestPTypeSmallLargeDiffWavesP3()
We do not find any differences when comparing across perturbation types.
plotPermTestSmallLargeRP()
getSmallLargeERPPvalStats(comparison = 'vsAligned', erps = 'rp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 smallrot 100 104 -0.500 -0.485 0.392
## 2 1 smallrot 117 136 -0.415 -0.325 0.043
## 3 2 smallrot 15 17 -0.925 -0.920 0.552
## 4 3 smallrot 77 79 -0.615 -0.610 0.575
## 5 4 largerot 152 153 -0.240 -0.240 0.625
## 6 5 largerot 77 78 -0.615 -0.615 0.629
## 7 6 smallrdm 109 110 -0.455 -0.455 0.551
## 8 7 smallrdm 114 134 -0.430 -0.335 0.060
## 9 8 smallrdm 139 140 -0.305 -0.305 0.551
## 10 9 smallrdm 159 161 -0.205 -0.200 0.463
## 11 10 smallrdm 0 3 -1.000 -0.990 0.373
## 12 11 largerdm 120 125 -0.400 -0.380 0.321
## 13 12 largerdm 149 151 -0.255 -0.250 0.553
## 14 13 largerdm 163 167 -0.185 -0.170 0.387
## 15 14 largerdm 26 37 -0.870 -0.820 0.148
## 16 15 largerdm 48 53 -0.760 -0.740 0.276
## 17 16 smallmir 103 106 -0.485 -0.475 0.362
## 18 17 smallmir 116 130 -0.420 -0.355 0.106
## 19 18 smallmir 134 138 -0.330 -0.315 0.351
## 20 19 smallmir 150 201 -0.250 0.000 0.013
## 21 20 largemir NA NA NA NA NA
plotPermTestSmallLargeRPDiffWaves()
getSmallLargeERPPvalStats(comparison = 'SmallvsLarge', erps = 'rp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rot 41 43 -0.795 -0.790 0.614
## 2 1 rot 99 101 -0.505 -0.500 0.613
## 3 2 rdm 49 52 -0.755 -0.745 0.361
## 4 3 rdm 90 94 -0.550 -0.535 0.265
## 5 4 mir NA NA NA NA NA
We find no differences between small and large errors during movement preparation across perturbation types.
plotPermTestPTypeSmallLargeRPDiffWaves()
getSmallLargeERPPvalStats(comparison = 'PerturbTypeComp', erps = 'rp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rotvmir NA NA NA NA NA
## 2 1 rotvrdm 33 35 -0.835 -0.830 0.523
## 3 2 rotvrdm 49 52 -0.755 -0.745 0.387
## 4 3 rotvrdm 90 93 -0.550 -0.540 0.449
## 5 4 mirvrdm 91 93 -0.545 -0.540 0.520
We find no differences across perturbation types during movement preparation.
plotPermTestSmallLargeLRPs()
getSmallLargeERPPvalStats(comparison = 'vsAligned', erps = 'lrp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 smallrdm 27 29 -0.865 -0.860 0.450
## 2 1 smallrdm 31 37 -0.845 -0.820 0.167
## 3 2 smallrdm 53 59 -0.735 -0.710 0.139
## 4 3 smallrdm 61 69 -0.695 -0.660 0.125
## 5 4 smallrdm 78 83 -0.610 -0.590 0.195
## 6 5 smallrdm 92 94 -0.540 -0.535 0.463
## 7 6 smallrdm 103 104 -0.485 -0.485 0.495
## 8 7 smallrdm 111 113 -0.445 -0.440 0.442
## 9 8 smallrdm 129 132 -0.355 -0.345 0.360
## 10 9 smallrdm 154 155 -0.230 -0.230 0.507
## 11 10 smallrdm 175 177 -0.125 -0.120 0.412
## 12 11 largerdm 27 35 -0.865 -0.830 0.118
## 13 12 largerdm 57 58 -0.715 -0.715 0.636
## 14 13 largerdm 66 72 -0.670 -0.645 0.207
## 15 14 largerdm 86 88 -0.570 -0.565 0.591
## 16 15 largerdm 127 130 -0.365 -0.355 0.472
## 17 16 largerdm 149 151 -0.255 -0.250 0.601
## 18 17 largerdm 196 199 -0.020 -0.010 0.498
## 19 18 smallrot 31 37 -0.845 -0.820 0.195
## 20 19 smallrot 67 69 -0.665 -0.660 0.566
## 21 20 smallrot 80 81 -0.600 -0.600 0.618
## 22 21 smallrot 99 102 -0.505 -0.495 0.469
## 23 22 smallrot 112 123 -0.440 -0.390 0.107
## 24 23 smallrot 131 142 -0.345 -0.295 0.113
## 25 24 smallrot 153 157 -0.235 -0.220 0.385
## 26 25 smallrot 197 199 -0.015 -0.010 0.576
## 27 26 largerot 0 5 -1.000 -0.980 0.228
## 28 27 largerot 24 25 -0.880 -0.880 0.641
## 29 28 largerot 35 38 -0.825 -0.815 0.405
## 30 29 largerot 55 60 -0.725 -0.705 0.276
## 31 30 largerot 62 69 -0.690 -0.660 0.182
## 32 31 largerot 76 88 -0.620 -0.565 0.067
## 33 32 largerot 89 95 -0.555 -0.530 0.238
## 34 33 largerot 99 107 -0.505 -0.470 0.138
## 35 34 largerot 119 126 -0.405 -0.375 0.178
## 36 35 largerot 137 146 -0.315 -0.275 0.137
## 37 36 largerot 157 159 -0.215 -0.210 0.583
## 38 37 largerot 175 180 -0.125 -0.105 0.288
## 39 38 smallmir 27 32 -0.865 -0.845 0.137
## 40 39 largemir 30 33 -0.850 -0.840 0.401
## 41 40 largemir 37 40 -0.815 -0.805 0.438
## 42 41 largemir 48 52 -0.760 -0.745 0.290
## 43 42 largemir 56 60 -0.720 -0.705 0.321
## 44 43 largemir 66 76 -0.670 -0.625 0.094
## 45 44 largemir 79 83 -0.605 -0.590 0.296
## 46 45 largemir 128 130 -0.360 -0.355 0.582
plotPermTestSmallLargeLRPDiffWaves()
getSmallLargeERPPvalStats(comparison = 'SmallvsLarge', erps = 'lrp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rot 0 6 -1.000 -0.975 0.162
## 2 1 rot 26 27 -0.870 -0.870 0.738
## 3 2 rdm NA NA NA NA NA
## 4 3 mir 16 18 -0.920 -0.915 0.735
## 5 4 mir 39 40 -0.805 -0.805 0.764
## 6 5 mir 50 51 -0.750 -0.750 0.803
## 7 6 mir 90 93 -0.550 -0.540 0.565
## 8 7 mir 107 109 -0.465 -0.460 0.632
## 9 8 mir 139 143 -0.305 -0.290 0.422
We find no differences between small and large errors during movement preparation across perturbation types.
plotPermTestPTypeSmallLargeLRPDiffWaves()
getSmallLargeERPPvalStats(comparison = 'PerturbTypeComp', erps = 'lrp')
## X condition clust_idx_start clust_idx_end time_start time_end p_values
## 1 0 rotvmir NA NA NA NA NA
## 2 1 rotvrdm 8 9 -0.960 -0.960 0.643
## 3 2 rotvrdm 50 54 -0.750 -0.735 0.336
## 4 3 rotvrdm 75 85 -0.625 -0.580 0.086
## 5 4 mirvrdm 44 45 -0.780 -0.780 0.803
We find no differences across perturbation types during movement preparation.
Although we have all figures and statistical comparisons in this document, we summarize the main findings in the manuscript.
plotFeedbackERP()
plotReadinessERP()
plotLateralizedRP()